<?php
/**
 * 商品属性类
 */
namespace app\admin\controller;
use app\admin\controller\Common;
class Attrs extends Common{

	/**
	 * 展示商品属性列表页
	 */
	public function lst(){

		//获取信息
		$id = input('id')+0;
		
		//分配模版标头信息变量
		$this->setPageTitle( "属性列表","添加属性",url('addShow',['id'=>$id]) );

		//获取类型
		$types = db('type')->select();

		//获取类型下属性信息
		$tid = input('id')+0;
		$attrs = db('attrs')->where('tid','=',$tid)->order('sort,aid desc')->paginate(config('paginate.list_rows'));

		//分配变量
		$this->assign('types',$types);
		$this->assign('attrs',$attrs);

		//展示视图
		return $this->fetch();
	}

	/**
	 * 展示商品属性添加页
	 */
	public function addShow(){

		//分配模版标头信息变量
		$this->setPageTitle("添加属性","属性列表",url('lst'));

		//获取类型
		$types = db('type')->select();

		//分配变量
		$this->assign('types',$types);

		//展示视图
		return $this->fetch('add');
	}

	/**
	 * 添加商品属性
	 */
	public function add(){

		//安全处理 
		if( !request()->isPost() ){

			$this->error('您访问的页面不存在！');

		}
		
		//数据验证
		$validate = \think\Loader::validate('Attrs');
		if( !$validate->check( input('post.') ) ) {

			$this->error( $validate->getError() );

		}

		//处理数据
		$data['tid'] = input('post.type_id')+0;
		$data['attr_name'] = input('post.attrName');
		$data['attr_type'] = input('post.attrType');
		$data['input_type'] = input('post.inputType');
		$data['attr_value'] = !$data['input_type']? '' : input('post.attr_option_values');
		$data['sort'] = input('post.sort')+0;
		
		//如果录入方式选择的是在列表中选择，那么必须填写可选值
		if( $data['input_type'] == 1 && empty($data['attr_value']) ) {

			$this->error('请填写属性的可选值！');

		}

		//判断属性名是否存在
		$db = db('attrs');
		if( $db->getbyAttrName($data['attr_name']) ){

			$this->error('该属性名已经存在，请更换属性名！');

		}

		//添加属性
		if( $db->strict(true)->insert($data) ){

			//获取最后执行的sql语句
			$sql = $db->getLastSql();

			//添加管理员日志
			adminLog( session('id'), '添加了商品属性：'.$data['attr_name'], $sql );

			$this->success('添加成功！',url('lst',['id'=>$data['tid']]));

		}else{

			$this->error('添加失败！');
			
		}

	}

	/**
	 * 展示商品属性添加页
	 */
	public function editShow(){

		//分配模版标头信息变量
		$this->setPageTitle("修改属性","属性列表",url('lst'));

		//获取类型
		$types = db('type')->select();

		//获取分类
		$id = input('id')+0;
		$attr = db('attrs')->find($id);

		//分配变量
		$this->assign('types',$types);
		$this->assign('attr',$attr);

		//展示视图
		return $this->fetch('edit');
	}

	/**
	 * 添加商品属性
	 */
	public function edit(){

		//安全处理 
		if( !request()->isPost() ){

			$this->error('您访问的页面不存在！');

		}

		//处理数据
		$data['tid'] = input('post.type_id')+0;
		$data['attr_name'] = input('post.attrName');
		$data['attr_type'] = input('post.attrType');
		$data['input_type'] = input('post.inputType');
		$data['attr_value'] = !$data['input_type']? '' : input('post.attr_option_values');
		$data['sort'] = input('post.sort')+0;
		$data['aid'] = input('post.attrId')+0;

		//如果录入方式选择的是在列表中选择，那么必须填写可选值
		if( $data['input_type'] == 1 && empty($data['attr_value']) ) {

			$this->error('请填写属性的可选值！');

		}
		
		//判断属性名是否存在
		$db = db('attrs');
		$attrName = $db->where( 'aid','=',$data['aid'] )->value('attr_name');
		if(  $attrName!=$data['attr_name']  ){

			if( $db->getbyAttrName($data['attr_name']) ){

				$this->error('该属性名已经存在，请更换属性名！');

			}

		}

		//添加属性
		if( false !== $db->strict(true)->update($data) ){

			//获取最后执行的sql语句
			$sql = $db->getLastSql();

			//添加管理员日志
			adminLog( session('id'), '修改了商品属性：'.$data['attr_name'], $sql );

			$this->success('修改成功！',url('lst',['id'=>$data['tid']]));

		}else{

			$this->error('修改失败！');
			
		}

	}

	/**
	 * 异步删除商品属性
	 */
	public function del(){

		//安全处理 
		if( !request()->isAjax() ){

			$this->error('您访问的页面不存在！');

		}

		//接收信息
		$id = input('id')+0;
		$name = input('name');

		//判断商品属性下是否存在该属性
		if( db('goods_attrs')->where('aid','=',$id)->find() ){

			echo json_encode(['status'=>false,'msg'=>'商品属性中用到了该属性，请先删除商品属性中的该属性信息，再来删除！']);
			die;
		}

		//删除属性
		$db = db('attrs');
		if( $db->delete($id) ){

			//获取最后执行的sql语句
			$sql = $db->getLastSql();

			// //添加管理员日志
			adminLog( session('id'), '删除了商品属性：'.$name, $sql );

			echo json_encode(['status'=>true,'msg'=>'删除成功！']);
		}else{

			echo json_encode(['status'=>false,'msg'=>'删除失败！']);
		}

	}

}